#include "infraredspectrumprivatedefine.h"

namespace DataSpecificationGW
{
    InfraredExtInformationPrivate::InfraredExtInformationPrivate()
    {
        ucTemperatureUnit = 17;
        bSkipTemperatureUnit = false;
        bHasTemperatureUnit = false;

        iTempLatticeWidth = 0;
        bSkipTempLatticeWidth = false;
        bHasTempLatticeWidth = false;

        iTempLatticeHeight = 0;
        bSkipTempLatticeHeight = false;
        bHasTempLatticeHeight = false;

        iVisibleLightLenL1 = 0;
        bSkipVisibleLightLenL1 = false;
        bHasVisibleLightLenL1 = false;

        iInfraredDataLenL2 = 0;
        bSkipInfraredDataLenL2 = false;
        bHasInfraredDataLenL2 = false;

        fEmissivity = 0;
        bSkipEmissivity = false;
        bHasEmissivity = false;

        fMeasureDistance = 0;
        bSkipMeasureDistance = false;
        bHasMeasureDistance = false;

        fAtomTemperature = 0;
        bSkipAtomTemperature = false;
        bHasAtomTemperature = false;

        cRelativeHumidity = 0;
        bSkipRelativeHumidity = false;
        bHasRelativeHumidity = false;

        fReflectedTemperature = 0;
        bSkipReflectedTemperature = false;
        bHasReflectedTemperature = false;

        fTemperatureWidthUpper = 0;
        bSkipTemperatureWidthUpper = false;
        bHasTemperatureWidthUpper = false;

        fTemperatureWidthLower = 0;
        bSkipTemperatureWidthLower = false;
        bHasTemperatureWidthLower = false;
    }

    InfraredExtInformationPrivate& InfraredExtInformationPrivate::operator=(const InfraredExtInformationPrivate& stInfraredExtInformationPrivate)
    {
        this->ucTemperatureUnit = stInfraredExtInformationPrivate.ucTemperatureUnit;
        this->iTempLatticeWidth = stInfraredExtInformationPrivate.iTempLatticeWidth;
        this->iTempLatticeHeight = stInfraredExtInformationPrivate.iTempLatticeHeight;
        this->iVisibleLightLenL1 = stInfraredExtInformationPrivate.iVisibleLightLenL1;
        this->iInfraredDataLenL2 = stInfraredExtInformationPrivate.iInfraredDataLenL2;
        this->fEmissivity = stInfraredExtInformationPrivate.fEmissivity;
        this->fMeasureDistance = stInfraredExtInformationPrivate.fMeasureDistance;
        this->fAtomTemperature = stInfraredExtInformationPrivate.fAtomTemperature;
        this->cRelativeHumidity = stInfraredExtInformationPrivate.cRelativeHumidity;
        this->fReflectedTemperature = stInfraredExtInformationPrivate.fReflectedTemperature;
        this->fTemperatureWidthUpper = stInfraredExtInformationPrivate.fTemperatureWidthUpper;
        this->fTemperatureWidthLower = stInfraredExtInformationPrivate.fTemperatureWidthLower;
        return *this;
    }

    bool InfraredExtInformationPrivate::operator==(const InfraredExtInformationPrivate& stInfraredExtInformationPrivate) const
    {
        if (!(this->ucTemperatureUnit == stInfraredExtInformationPrivate.ucTemperatureUnit)) return false;
        if (!(this->iTempLatticeWidth == stInfraredExtInformationPrivate.iTempLatticeWidth)) return false;
        if (!(this->iTempLatticeHeight == stInfraredExtInformationPrivate.iTempLatticeHeight)) return false;
        if (!(this->iVisibleLightLenL1 == stInfraredExtInformationPrivate.iVisibleLightLenL1)) return false;
        if (!(this->iInfraredDataLenL2 == stInfraredExtInformationPrivate.iInfraredDataLenL2)) return false;
        if (!qFuzzyCompare(this->fEmissivity, stInfraredExtInformationPrivate.fEmissivity)) return false;
        if (!qFuzzyCompare(this->fMeasureDistance, stInfraredExtInformationPrivate.fMeasureDistance)) return false;
        if (!qFuzzyCompare(this->fAtomTemperature, stInfraredExtInformationPrivate.fAtomTemperature)) return false;
        if (!(this->cRelativeHumidity == stInfraredExtInformationPrivate.cRelativeHumidity)) return false;
        if (!qFuzzyCompare(this->fReflectedTemperature, stInfraredExtInformationPrivate.fReflectedTemperature)) return false;
        if (!qFuzzyCompare(this->fTemperatureWidthUpper, stInfraredExtInformationPrivate.fTemperatureWidthUpper)) return false;
        if (!qFuzzyCompare(this->fTemperatureWidthLower, stInfraredExtInformationPrivate.fTemperatureWidthLower)) return false;
        return true;
    }


    InfraredDataPrivate::InfraredDataPrivate()
    {
        bSkipInfraredTemperatureData = false;
        bHasInfraredTemperatureData = false;

        bSkipVisibleLightPhotoData = false;
        bHasVisibleLightPhotoData = false;

        bSkipInfraredPhotoData = false;
        bHasInfraredPhotoData = false;
    }

    InfraredDataPrivate& InfraredDataPrivate::operator=(const InfraredDataPrivate& stInfraredDataPrivate)
    {
        this->qbaInfraredTemperatureData = stInfraredDataPrivate.qbaInfraredTemperatureData;
        this->qbaVisibleLightPhotoData = stInfraredDataPrivate.qbaVisibleLightPhotoData;
        this->qbaInfraredPhotoData = stInfraredDataPrivate.qbaInfraredPhotoData;
        return *this;
    }

    bool InfraredDataPrivate::operator==(const InfraredDataPrivate& stInfraredDataPrivate) const
    {
        if (!(this->qbaInfraredTemperatureData == stInfraredDataPrivate.qbaInfraredTemperatureData)) return false;
        if (!(this->qbaVisibleLightPhotoData == stInfraredDataPrivate.qbaVisibleLightPhotoData)) return false;
        if (!(this->qbaInfraredPhotoData == stInfraredDataPrivate.qbaInfraredPhotoData)) return false;
        return true;
    }
}
